;	��������� ���������
;	-------------------
; ����������� �� ������ 800h, � ����� ��������� ���������
;	�� ������ 0AC00h
;

;	-------------------------------------------
;
	org	800h				;�������� ������������ ������ �������� ��
	jmp	M1
U_Outstring	dw	0
U_FileSearch	dw	0
U_FileUpload	dw	0
Old	dd	0ac00100h
FName	db	'        '
M1:
;������������� ������� 21h
	xor	ax,ax				;AX <- 0
	mov	es,ax				;ES <- 0
	mov	dx,Obr_pr			;DX <- �����-�������� �����������
	mov	[es:84h],dx			;������ ������-�������� � ������
	mov	dx,cs				;DX <- �����-������� �����������
	mov	[es:86h],dx			;������ ������-�������� � ������
;��������� �������� ������
	mov	ah,11h
	mov	al,0h
	mov	bh,16
	mov	bl,0
	mov	cx,2
	mov	dx,80h
	mov	bp,Table1	
	int	10h
;���� ����� �����
M2:	mov	si,Msg3				;SI <- ����� ���������
	mov	ah,9h
	int	21h                             ;����� ��������� � ����� ����� �����
	mov	cx,8
	mov	si,0
L1:	mov	ah,1h
	int	21h
	cmp	al,0dh
	je	M3
	mov	[FName+si],al
	inc	si
	loop	L1
M3:     mov	ah,2h
	mov	dl,0dh
	int	21h
	mov	dl,0ah
	int	21h
;����� ����� � �������� ��������
	mov	bx,FName                        ;�����-�������� ����� �����
	call	[U_FileSearch]	                ;����� ����� � �������� ��������
	jnc	M4				;���� ��� ������
	mov	si,Msg2				;SI <- ����� ���������
	mov	ah,9h
	int	21h                             ;����� ��������� �� ������
	jmp	M6				
M4:
;�������� �����
	mov	bx,0ac0h
	mov	es,bx
	mov	bx,100h
	call	[U_FileUpload]
	jnc	M5				;���� ��� ������
	mov	si,Msg1				;SI <- ����� ���������
	mov	ah,9h
	int	21h                             ;����� ��������� �� ������
	jmp	M6				
M5:
;������� �� ����������� ���������
	mov	ax,0ac0h
	mov	ds,ax
	mov	es,ax
	mov	ss,ax
	add	ax,100h
	mov	sp,ax
;���������� ���������
	call	far	[cs:Old]		;������� ��������� ����� ���������
;�������������� ����������
	mov	ax,0h				;�������� � ���������� 
	mov	ds,ax				; ��������
	mov	es,ax				; DS, ES, SS
	mov	ss,ax				; ����� 0
	mov	ax,800h				;�������� � ��������� �����
	mov	sp,ax				; SP ����� 800h
M6:	mov	cx,8				;���������� ���������������
	mov	si,0				; ���� ����� �����
L2:	mov	[FName+si],byte 20h		; ���������
	inc	si
	loop	L2
	jmp	M2				;������� �� ������ ����� �����
Msg1	db	'Error loading', 0dh, 0ah, '$'	;��������� �� ������ ��������
Msg2	db	'Not file', 0dh, 0ah, '$'	;��������� �� ������ ������ �����
Msg3	db	'Enter file name: ', '$'        ;��������� � ����� ����� �����
;
;	���������� ����������
;	---------------------
; ����: AH - ������� ������
;	DL - ASCII-��� �������
;	SI - ��������� �� ������ ������ ��������
; �����:AL - ASCII-��� �������
;	AH - ������� ��� ����������� ��� ASCII
;
Obr_pr:
	cmp	ah,1h
	je	.M1
	cmp	ah,2h
	je	.M2
	cmp	ah,9h
	jne	.Exit
;����� ������ �������� (SI - ��������� �� ������ ������ ��������)
	push	ax
	push	bx
	push	si
.Next:	lodsb					;AL <- si-� ����, SI <- SI+1
	cmp	al,'$'				;(AL)=24h?
	je	.EndSt				;���� ��
	mov	ah,0eh				;������� ������ �������
	xor	bh,bh				;������� �������������
	pushf					;������ � ���� �������� ������
	call	far	[cs:40h]		;������ "int 10h"
	jmp	.Next				;�� ��������� ��������
.EndSt:	pop	si
	pop	bx
	pop	ax
	jmp	.Exit
.M1:
;���� ������� � ���������� (AL �������� ASCII-��� �������, AH - ������� ��� ����������� ��� ASCII)
	push	bx
	mov	ah,0h				;������� ����� ������� � ����������
	pushf					;������ � ���� �������� ������
	call	far	[cs:58h]		;������ "int 16h"
;����� "���" �������
	mov	ah,0eh				;������� ������ �������
	xor	bh,bh				;������� ������� �������������
	pushf					;������ � ���� �������� ������
	call	far	[cs:40h]		;������ "int 10h"
	pop	bx
	jmp	.Exit
.M2:
;����� ������� �� ����� (DL �������� ASCII-��� �������)
	push	ax
	push	bx
	mov	ah,0eh				;������� ������ �������
	mov	al,dl				;AL <- ��� ASCII �������
	xor	bh,bh				;������� ������� �������������
	pushf					;������ � ���� �������� ������
	call	far	[cs:40h]		;������ "int 10h"
	pop	bx
	pop	ax
.Exit:	iret					;������� �� ����������� 21h
Table1	db	00h,00h,10h,38h,6ch,0c6h,0c6h,0feh
	db	0c6h,0c6h,0c6h,0c6h,00h,00h,00h,00h
	db	00h,00h,0feh,62h,60h,7ch,66h,66h
	db	66h,66h,66h,0fch,00h,00h,00h,00h